package com.devilvan.betrice.brand.service;

import com.devilvan.betrice.brand.po.CnBrandPo;
import com.devilvan.betrice.brand.vo.CnBrandVo;
import com.devilvan.betrice.common.BetriceResultVo;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * @author Evad.Wu
 * @Description 中国品牌网 业务逻辑接口
 * @date 2022-09-16
 */
public interface CnBrandService {
    /**
     * 采集网页信息
     *
     * @param url 采集的网页
     * @return 结果集
     */
    List<CnBrandVo> doJsoupCrawler(String url);

    /**
     * 采集网页信息
     *
     * @return 结果集
     */
    List<CnBrandVo> doCrawlViewSource();

    /**
     * 业务处理
     *
     * @return 形式回调
     */
    CompletableFuture<BetriceResultVo<CnBrandPo>> doCnBrand();

    /**
     * 处理异常队列中的数据
     *
     * @return 形式回调
     */
    BetriceResultVo<CnBrandPo> doCnBrandException();

    /**
     * 保存采集的数据
     *
     * @param cnBrandVoList 采集到的网页信息
     * @return 形式回调
     */
    BetriceResultVo<CnBrandPo> saveCnBrandBatch(List<CnBrandVo> cnBrandVoList);

    /**
     * 保存
     *
     * @param cnBrandPo 待保存的对象
     * @return 保存回调对象
     */
    CnBrandPo saveUpdate(CnBrandPo cnBrandPo);

    /**
     * 批量保存
     *
     * @param list 待保存的对象集合
     * @return 保存回调对象
     */
    List<CnBrandPo> saveUpdateBatch(List<CnBrandPo> list);

    /**
     * 查询所有品牌的URL和名称
     *
     * @return 结果集
     */
    List<CnBrandPo> findAllIndustryUrlName();
}